`
https://leetcode.cn/problems/video-stitching/
`

/**
 * @param {number[][]} clips
 * @param {number} time
 * @return {number}
 */
var videoStitching = function (clips, time) {
  if (time === 0) return 0

  clips.sort((a, b) => {
    if (a[0] === b[0]) {
      return b[1] - a[1]
    }
    return a[0] - b[0]
  })

  // 记录选择的短视频个数
  let res = 0

  // 记录当前的结尾和下一个结尾
  let curEnd = 0, nextEnd = 0
  let i = 0
  const n = clips.length

  while (i < n && clips[i][0] <= curEnd) {
    // 在第 res 个视频的区间内贪心选择下一个视频
    while (i < n && clips[i][0] <= curEnd) {
      nextEnd = Math.max(nextEnd, clips[i][1]);
      i++;
    }
    // 找到下一个视频，更新 curEnd
    res++;
    curEnd = nextEnd;
    if (curEnd >= time) {
      // 已经可以拼出区间 [0, time]
      return res;
    }
  }
  // 无法连续拼出区间 [0, time]
  return -1
};